# 1.必备
# 指定最低兼容版本
cmake_minimum_required(VERSION 3.22) 
# 指定项目的名称, 还可指定语言和版本号，一般定义一次，会生成一些全局cmake变量
project(step_base)  
# 指定源代码文件创建可执行文件step_base
add_executable(step_base step1.cc) 


# 2.cmake 命令
# CMAKE_CXX_STANDARD # 指定 C++ 标准
# CMAKE_CXX_STANDARD_REQUIRED
set(CMAKE_CXX_STANDARD  11)
set(CMAKE_CXX_STANDARD_REQUIRED  True)


# 3.添加版本号和配置文件
# 当 project() 命令被调用时，CMake 在幕后定义了 step_base_VERSION_MAJOR 和 step_base_VERSION_MINOR
project(step_base VERSION 1.1) 
# 创建一个配置文件模板，xx.h.in, 使用 configure_file() 传递的变量, 替换输入文件内容中的一些变量值 @VAR@，并输出文件
# 在 configure_file 中，变量需要使用 ${} 语法来引用
# 使用 @ONLY 参数表示只替换 @VAR@ 形式的变量，而不替换 $VAR 形式的变量（类 Unix shell 风格）
set(MY_VAR "Hello, World!") # 自定义变量
configure_file(config.h.in config.h @ONLY)
configure_file(config_temp.txt config.txt )
# 由于配置文件将写入项目二进制目录，必须将该目录添加到路径列表中以搜索包含文件使用 
target_include_directories(step_base PUBLIC ${PROJECT_BINARY_DIR}) 


set(CPACK_PACKAGE_NAME "pack_test")
set(CPACK_PACKAGE_VERSION "1.0.0")
set(CPACK_PACKAGE_VENDOR "MyCompany")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Description of MyAwesomeSoftware")

# set(CPACK_GENERATOR "ZIP;TGZ")  # 根据不同的生成器生成不同格式的安装包

set(CPACK_GENERATOR "DEB")
set(CPACK_DEBIAN_PACKAGE_DEPENDS "sshpass, can-utils") # 设置依赖
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Maintainer Name <maintainer@example.com>")

install(TARGETS step_base
        DESTINATION bin)

message("path: ${CMAKE_INSTALL_PREFIX}")
include(CPack) # 启用打包
# cpack 
